home *** CD-ROM | disk | FTP | other *** search
/ Language/OS - Multiplatform Resource Library / LANGUAGE OS.iso / oper_sys / emerald / emrldsys.lha / Language / Compiler / Makefile < prev    next >
Makefile  |  1990-08-16  |  15KB  |  525 lines

  1. #
  2. # @(#)Makefile    1.10  1/20/89
  3. #
  4.  
  5. # The other host to distribute the compiler to
  6. INSTALLHOSTS = bocklin lectura
  7. RELEASEHOSTS = bezier whistler
  8.  
  9. EMDIR=/scratch/eric/emerald/
  10. EMSERVERHOST = balder.diku.dk
  11. EMSITE=DIKU
  12.  
  13. BINFILES = \
  14.     ${EMDIR}/bin/ec \
  15.     ${EMDIR}/bin/runec \
  16.     ${EMDIR}/bin/newTreeVersion \
  17.     ${EMDIR}/bin/startOpNameServer
  18.  
  19. .SUFFIXES:
  20. .SUFFIXES:    .out .o .c .e .r .f .y .l .s .p .4s
  21. .SCCS_GET:
  22.  
  23. .4s.o:
  24.     @echo m4-ing $*.4s
  25.     @m4 $*.4s >$*.xs
  26.     @echo assembling $*.xs 
  27.     @as -o $*.o $*.xs
  28.  
  29. .c.s:
  30.     @echo compiling $*.c "(${INTERESTINGCFLAGS})"
  31.     @cc -S ${CFLAGS} $*.c
  32.  
  33. .c.o:
  34.     @echo compiling $*.c "(${INTERESTINGCFLAGS})"
  35.     @cc -c ${CFLAGS} $*.c
  36.  
  37. # GREP = fgrep -i
  38. GREP = egrep
  39.  
  40. OTHERDOTOS = \
  41.     ../Malloc/alloc.o
  42.  
  43. BUILTINSTUFF = Builtins/*.[mc] Builtins/Makefile \
  44.            Builtins/MakeTree Builtins/MakeDots \
  45.            DBuiltins/*.c DBuiltins/Makefile
  46.  
  47. OTHERSTUFF = \
  48.     ALLTAGS \
  49.     MAKETAGS \
  50.     makeNewTV \
  51.     MAKETOKENNAMES
  52.  
  53. EFFICIENTSOURCES = \
  54.     assert.c \
  55.     builtins.c \
  56.     cliOpNames.c \
  57.     construct.c \
  58.     display.c \
  59.     doSymbols.c \
  60.     environment.c \
  61.     error.c \
  62.     ident.c \
  63.     keyword.c \
  64.     main.c \
  65.     map.c \
  66.     evaluate.c \
  67.     names.c \
  68.     ndbm.c \
  69.     nodes.c \
  70.     readTree.c \
  71.     scan.c \
  72.     semantics.c \
  73.     sequence.c \
  74.     set.c \
  75.     sugar.c \
  76.     symbolTable.c \
  77.     typeCheck.c \
  78.     writeTree.c
  79.  
  80. BUGGYSOURCES = \
  81.     buildATs.c \
  82.     allocate.c \
  83.     allocRegs.c \
  84.     buildGraphs.c \
  85.     copyTree.c \
  86.     datadesc.c \
  87.     debuginfo.c \
  88.     depManifest.c \
  89.     emit.c \
  90.     gencode.c \
  91.     genexp.c \
  92.     genjump.c \
  93.     genutils.c \
  94.     inline.c \
  95.     invocCache.c \
  96.     knowCT.c \
  97.     knowLocal.c \
  98.     option.c \
  99.     primitives.c \
  100.     trace.c \
  101.     variables.c \
  102.     writeAT.c
  103.  
  104. SOURCES = ${EFFICIENTSOURCES} ${BUGGYSOURCES}
  105.  
  106. BLINDSOURCES = y.tab.c
  107.  
  108. EFFICIENTDOTOS = \
  109.     assert.o \
  110.     builtins.o \
  111.     cliOpNames.o \
  112.     construct.o \
  113.     display.o \
  114.     doSymbols.o \
  115.     environment.o \
  116.     error.o \
  117.     ident.o \
  118.     keyword.o \
  119.     evaluate.o \
  120.     main.o \
  121.     map.o \
  122.     names.o \
  123.     ndbm.o \
  124.     nodes.o \
  125.     readTree.o \
  126.     scan.o \
  127.     semantics.o \
  128.     sequence.o \
  129.     set.o \
  130.     sugar.o \
  131.     symbolTable.o \
  132.     typeCheck.o \
  133.     writeTree.o \
  134.     y.tab.o
  135.  
  136. BUGGYDOTOS = \
  137.     buildATs.o \
  138.     allocate.o \
  139.     allocRegs.o \
  140.     buildGraphs.o \
  141.     copyTree.o \
  142.     datadesc.o \
  143.     debuginfo.o \
  144.     depManifest.o \
  145.     emit.o \
  146.     gencode.o \
  147.     genexp.o \
  148.     genjump.o \
  149.     genutils.o \
  150.     option.o \
  151.     inline.o \
  152.     invocCache.o \
  153.     knowCT.o \
  154.     knowLocal.o \
  155.     primitives.o \
  156.     trace.o \
  157.     variables.o \
  158.     writeAT.o
  159. #    generateAT.o 
  160.  
  161. INCLUDES = \
  162.     MyParser.h \
  163.     addresses.h \
  164.     allocate.h \
  165.     assert.h \
  166.     buildATs.h \
  167.     builtins.h \
  168.     consts.h \
  169.     datadesc.h \
  170.     emit.h \
  171.     environment.h \
  172.     error.h \
  173.     evaluate.h \
  174.     flags.h \
  175.     genutils.h \
  176.     ident.h \
  177.     keyword.h \
  178.     map.h \
  179.     names.h \
  180.     ndbm.h \
  181.     nodes.h \
  182.     opNames.h \
  183.     option.h \
  184.     ecTypes.h \
  185.     emTypes.h \
  186.     primitives.h \
  187.     regdefs.h \
  188.     scan.h \
  189.     stdTypes.h \
  190.     semantics.h \
  191.     sequence.h \
  192.     symbols.h \
  193.     system.h \
  194.     tokens.h \
  195.     trace.h \
  196.     typecheck.h \
  197.     types.h \
  198.     version.h
  199.  
  200. BUILTINS = \
  201.     Builtins/realBuiltins.a \
  202.     DBuiltins/dummyBuiltins.a
  203.  
  204. ALLCFLAGS = -DEMDIR=\"${EMDIR}\" -DEMSERVERHOST=\"${EMSERVERHOST}\" -D${EMSITE}
  205. INTERESTINGCFLAGS = -g
  206. INTERESTINGECFLAGS = -g
  207. CFLAGS    = ${INTERESTINGCFLAGS} ${ALLCFLAGS}
  208. ECFLAGS = ${INTERESTINGECFLAGS} ${ALLCFLAGS}
  209.  
  210. # ec:    efficient ${BUGGYDOTOS} ${EFFICIENTDOTOS} ${BUILTINS}
  211. ec:    ${BUGGYDOTOS} ${EFFICIENTDOTOS} ${BUILTINS} ${OTHERDOTOS}
  212.     @echo linking ec
  213.     @cc ${CFLAGS} -n -o ec ${EFFICIENTDOTOS} ${BUGGYDOTOS} ${BUILTINS} \
  214.         ${OTHERDOTOS}
  215.  
  216. slowtags:    ${SOURCES} ${INCLUDES}
  217.     @echo making tags
  218.     @touch tags
  219.     @for name in $? ; do echo "    $$name" ; ctags -twu $$name ; done
  220.  
  221. tags:    ${SOURCES} ${INCLUDES}
  222.     @echo making tags
  223.     @ctags -tw ${SOURCES} ${INCLUDES}
  224.  
  225. ec.cflow:    ${SOURCES} ${INCLUDES} em.ccompiler.y
  226.     sh -x /u1/norm/bin/cflow -r -ix -i_ ${SOURCES} em.ccompiler.y > ec.cflow
  227.  
  228. ../Malloc/alloc.o:
  229.     cd ../Malloc ; make production
  230.  
  231. y.tab.o:    y.tab.c
  232.     @echo compiling y.tab.c "($(INTERESTINGECFLAGS))"
  233.     @cc -c $(ECFLAGS) y.tab.c
  234.  
  235. Builtins/realBuiltins.a:
  236.     cd Builtins; make phoney
  237.  
  238. DBuiltins/dummyBuiltins.a:
  239.     cd DBuiltins; make
  240.  
  241. y.tab.c y.tab.h: em.ccompiler.y
  242.     @echo "Expect 4 shift/reduce 1 reduce/reduce conflicts."
  243.     yacc -d em.ccompiler.y
  244.     -if cmp -s y.tab.h UsedParser.h ; then \
  245.         copydate UsedParser.h em.ccompiler.y ; \
  246.         copydate UsedParser.h y.tab.h ; \
  247.         else cp y.tab.h UsedParser.h ; \
  248.                  copydate y.tab.h UsedParser.h; \
  249.             fi;
  250.  
  251. UsedParser.h:    y.tab.h
  252.  
  253. nodes.o:    tagNames.c
  254.  
  255. main.o:        tokenNames.c
  256.  
  257. main.o:    main.c
  258.     @echo "compiling main.c (${INTERESTINGECFLAGS})"
  259.     @cc -c ${ECFLAGS} main.c
  260.  
  261. map.o:    map.c
  262.     @echo "compiling map.c (${INTERESTINGCFLAGS})"
  263.     @cc -c ${CFLAGS} map.c
  264.  
  265. tokenNames.c:    MAKETOKENNAMES em.ccompiler.y
  266.     csh MAKETOKENNAMES
  267.  
  268. tagNames.c:    ALLTAGS MAKETAGNAMES
  269.     csh MAKETAGNAMES
  270.  
  271. version.h:    ALLTAGS makeNewTV
  272.     csh makeNewTV
  273.  
  274. tags.h:    ALLTAGS MAKETAGS
  275.     csh MAKETAGS
  276.  
  277. print:
  278.     pr ${SOURCES} ${INCLUDES} em.ccompiler.y | enscript -2 -l -r -k
  279.  
  280. tar:
  281.     @echo "Writing to the tape"
  282.     @tar cf /dev/rmt12 ${SOURCES} ${INCLUDES} em.ccompiler.y Makefile \
  283.         ${BUILTINSTUFF} ${OTHERSTUFF}
  284.  
  285. Compiler.tar:
  286.     @echo "Writing to Compiler.tar"
  287.     @tar cf Compiler.tar ${SOURCES} ${INCLUDES} em.ccompiler.y Makefile \
  288.         ${BUILTINSTUFF} ${OTHERSTUFF}
  289.  
  290. sources:
  291.     @echo "${SOURCES}"
  292.  
  293. includes:
  294.     @echo "${INCLUDES}"
  295.  
  296. lint:
  297.     @echo "Running lint"
  298.     @lint -hbxuz ${ALLCFLAGS} ${SOURCES} > lint$$$$ 2>&1 ; \
  299.      sed \
  300.          -e '/warning: z__z redefinition hides earlier one/d' \
  301.          -e '/possible pointer alignment problem/d' \
  302.          -e '/warning: constant in conditional context/d' \
  303.          -e '/warning: constant argument to NOT/d' \
  304.          -e '/can.t take & of/d' \
  305.          -e '/(.*):/s/^\([^(]*\)(\([^)]*\)):/"\1", line \2:/' \
  306.          -e 's/::  \([a-zA-Z-_.]*\)(\([0-9]*\))/:: file "\1", line \2/' \
  307.          < lint$$$$ ; \
  308.      rm -f lint$$$$ 
  309.  
  310. buggylint:
  311.     @echo "Running buggy lint"
  312.     @lint -hbxu ${BUGGYSOURCES} | \
  313.      sed \
  314.          -e '/warning: z__z redefinition hides earlier one/d' \
  315.          -e '/possible pointer alignment problem/d' \
  316.          -e '/warning: constant in conditional context/d' \
  317.          -e '/warning: constant argument to NOT/d' \
  318.          -e '/can.t take & of/d' \
  319.          -e '/(.*):/s/^\([^(]*\)(\([^)]*\)):/"\1", line \2:/' \
  320.          -e 's/::  \([a-zA-Z-_.]*\)(\([0-9]*\))/:: file "\1", line \2/'
  321.  
  322. clean:
  323.     rm -f ${BUGGYDOTOS} ${EFFICIENTDOTOS} core *.bak *.ckp efficient \
  324.     y.tab.c y.tab.h ec *.g 
  325.     cd ../Malloc ; make clean
  326.  
  327. cleanup:
  328.     rm -f core *.bak *.ckp *.[0-9]*.s *.[0-9]*.o OID*.t *.tree *.g
  329.  
  330. # fix:
  331. #    @-fixup '${O}' '${N}' ${SOURCES} ${INCLUDES} em.ccompiler.y
  332. #     @-fixup '${O}' '${N}' buildATs.c
  333.  
  334. grep:
  335.     @-${GREP} -n -e '${G}' ${SOURCES} ${INCLUDES} em.ccompiler.y
  336.  
  337. efficient:    ${EFFICIENTSOURCES} ${BLINDSOURCES} ${INCLUDES}
  338.     @echo "Making efficient .o's"
  339.     @touch efficient
  340.     @make -k CFLAGS='$(ECFLAGS)' `echo ${EFFICIENTSOURCES} ${BLINDSOURCES} | \
  341.         sed -e s/\\\\.c/.o/g`
  342.  
  343. ${EMDIR}/bin/ec:    ec
  344.     /bin/rm -f ${EMDIR}/bin/ec
  345.     cp ec ${EMDIR}/bin/ec
  346.     strip ${EMDIR}/bin/ec
  347.  
  348. install:    ${EMDIR}/bin/ec installNTV
  349.     echo "( ${BINFILES} ) -> ( ${INSTALLHOSTS} ) " > d.install
  350.     echo "    install -w;" >> d.install
  351.     echo "( ${EMDIR}/Builtins ) -> ( ${INSTALLHOSTS} ) " >> d.install
  352.     echo "    install -w -R;" >> d.install
  353.     rdist -f d.install
  354.     rm d.install
  355.  
  356. installNTV:    version.h
  357.     @echo "Deleting old version trees on:"
  358.     @for name in ${INSTALLHOSTS} ; do echo "    $$name" ; \
  359.         rsh $$name -n ${EMDIR}/bin/newTreeVersion ; done 
  360.     touch installNTV
  361.  
  362. release:    ${EMDIR}/bin/ec releaseNTV
  363.     echo "( ${BINFILES} ) -> ( ${RELEASEHOSTS} ) " > d.release
  364.     echo "    install -w;" >> d.release
  365.     echo "( ${EMDIR}/Builtins ) -> ( ${RELEASEHOSTS} ) " >> d.release
  366.     echo "    install -w -R;" >> d.release
  367.     rdist -f d.release
  368.     rm d.release
  369.  
  370. releaseNTV:    version.h
  371.     @echo "Deleting old version trees on:"
  372.     @for name in ${RELEASEHOSTS} ; do echo "    $$name" ; \
  373.         rsh $$name -n ${EMDIR}/bin/newTreeVersion ; done 
  374.     touch releaseNTV
  375.  
  376. depend:    ${SOURCES} ${BLINDSOURCES} ${INCLUDES}
  377.     @echo "Doing .c files"
  378.     @grep '^#include' ${SOURCES} ${BLINDSOURCES} | \
  379.           grep -v '<' | \
  380.           sed 's/:[^"]*"\([^"]*\)".*/: \1/' | \
  381.           sed 's/\.c/.o/' | sed 's,\.\./[a-zA-Z0-9+-_]*/,,' | \
  382.     awk ' { if ($$1 != prev) { print rec; rec = $$0; prev = $$1; } \
  383.         else { if (length(rec $$2) > 78) { print rec; rec = $$0; } \
  384.                else rec = rec " " $$2 } } \
  385.           END { print rec } ' > makedep
  386.     @echo "Doing .h files"
  387.     @grep '^#include' ${INCLUDES} | \
  388.           grep -v '<' | \
  389.           sed 's/:[^"]*"\([^"]*\)".*/: \1/' | \
  390.           sed 's/\.c/.o/' | sed 's,\.\./[a-zA-Z0-9+-_]*/,,' | \
  391.     awk ' { if ($$1 != prev) { if (prev != "") print rec "\n\tmytouch " substr(prev, 1, length(prev) - 1); rec = $$0; prev = $$1; } \
  392.         else { if (length(rec $$2) > 78) { print rec; rec = $$0; } \
  393.                else rec = rec " " $$2 } } \
  394.           END { print rec ; print "\tmytouch " substr(prev, 1, length(prev)-1);} ' >> makedep
  395.     @echo "Finishing up"
  396.     @echo '$$r makedep' >>eddep
  397.     @echo '/^# DO NOT DELETE THIS LINE/+1,$$d' >>eddep
  398.     @echo '$$r makedep' >>eddep
  399.     @echo 'w' >>eddep
  400.     @cp Makefile Makefile.bak
  401.     @ed - Makefile < eddep
  402.     @rm eddep makedep
  403.  
  404. # DO NOT DELETE THIS LINE -- make depend uses it
  405.  
  406. builtins.o: assert.h tokens.h MyParser.h nodes.h builtins.h buildATs.h
  407. builtins.o: evaluate.h semantics.h sequence.h symbols.h version.h environment.h
  408. builtins.o: opNames.h
  409. cliOpNames.o: assert.h types.h opNames.h
  410. construct.o: assert.h nodes.h keyword.h system.h sequence.h semantics.h
  411. display.o: assert.h nodes.h MyParser.h opNames.h map.h sequence.h environment.h
  412. display.o: system.h
  413. doSymbols.o: assert.h error.h scan.h nodes.h symbols.h MyParser.h sequence.h
  414. doSymbols.o: semantics.h map.h system.h flags.h trace.h opNames.h
  415. environment.o: assert.h scan.h nodes.h error.h opNames.h flags.h system.h
  416. environment.o: sequence.h semantics.h map.h builtins.h environment.h trace.h
  417. environment.o: ndbm.h
  418. error.o: error.h nodes.h
  419. ident.o: ident.h assert.h
  420. keyword.o: assert.h ident.h keyword.h tokens.h
  421. main.o: assert.h nodes.h scan.h semantics.h builtins.h environment.h trace.h
  422. main.o: option.h tokenNames.c
  423. map.o: assert.h system.h map.h
  424. evaluate.o: assert.h error.h scan.h nodes.h symbols.h MyParser.h sequence.h
  425. evaluate.o: semantics.h system.h flags.h trace.h builtins.h map.h evaluate.h
  426. evaluate.o: opNames.h option.h ndbm.h
  427. names.o: assert.h nodes.h system.h error.h ident.h
  428. ndbm.o: ndbm.h
  429. nodes.o: assert.h nodes.h scan.h tagNames.c system.h
  430. readTree.o: assert.h nodes.h symbols.h system.h version.h error.h
  431. scan.o: assert.h nodes.h tokens.h system.h MyParser.h keyword.h error.h
  432. semantics.o: assert.h scan.h nodes.h error.h opNames.h flags.h system.h trace.h
  433. semantics.o: option.h builtins.h
  434. sequence.o: nodes.h sequence.h assert.h
  435. set.o: assert.h system.h set.h
  436. sugar.o: assert.h error.h scan.h nodes.h symbols.h MyParser.h semantics.h
  437. sugar.o: system.h builtins.h flags.h sequence.h opNames.h
  438. symbolTable.o: assert.h symbols.h nodes.h system.h map.h semantics.h sequence.h
  439. symbolTable.o: scan.h
  440. typeCheck.o: assert.h error.h ident.h nodes.h builtins.h MyParser.h sequence.h
  441. typeCheck.o: evaluate.h map.h primitives.h flags.h buildATs.h trace.h system.h
  442. typeCheck.o: opNames.h environment.h semantics.h typecheck.h
  443. writeTree.o: assert.h error.h scan.h nodes.h symbols.h MyParser.h semantics.h
  444. writeTree.o: system.h map.h version.h environment.h flags.h builtins.h trace.h
  445. buildATs.o: assert.h error.h ident.h nodes.h builtins.h symbols.h sequence.h
  446. buildATs.o: MyParser.h semantics.h evaluate.h buildATs.h opNames.h system.h
  447. buildATs.o: map.h flags.h environment.h trace.h
  448. allocate.o: assert.h addresses.h nodes.h map.h sequence.h system.h semantics.h
  449. allocate.o: flags.h builtins.h evaluate.h opNames.h allocate.h trace.h option.h
  450. allocate.o: genutils.h
  451. allocRegs.o: assert.h regdefs.h datadesc.h allocate.h genutils.h system.h
  452. allocRegs.o: error.h trace.h option.h emit.h consts.h
  453. buildGraphs.o: assert.h nodes.h map.h sequence.h trace.h
  454. copyTree.o: assert.h nodes.h sequence.h system.h map.h semantics.h trace.h
  455. datadesc.o: datadesc.h
  456. depManifest.o: assert.h nodes.h map.h sequence.h trace.h semantics.h builtins.h
  457. depManifest.o: MyParser.h flags.h error.h environment.h system.h typecheck.h
  458. emit.o: assert.h genutils.h nodes.h builtins.h regdefs.h flags.h trace.h
  459. emit.o: consts.h
  460. gencode.o: assert.h addresses.h nodes.h map.h sequence.h system.h semantics.h
  461. gencode.o: builtins.h evaluate.h opNames.h primitives.h allocate.h MyParser.h
  462. gencode.o: datadesc.h environment.h regdefs.h genutils.h emit.h error.h
  463. gencode.o: consts.h flags.h trace.h option.h
  464. genexp.o: assert.h addresses.h nodes.h map.h sequence.h system.h semantics.h
  465. genexp.o: builtins.h evaluate.h opNames.h primitives.h allocate.h MyParser.h
  466. genexp.o: datadesc.h environment.h regdefs.h genutils.h emit.h error.h consts.h
  467. genexp.o: flags.h trace.h option.h
  468. genjump.o: datadesc.h genutils.h allocate.h emit.h option.h
  469. genutils.o: assert.h addresses.h nodes.h map.h sequence.h system.h builtins.h
  470. genutils.o: evaluate.h opNames.h primitives.h allocate.h MyParser.h datadesc.h
  471. genutils.o: environment.h regdefs.h genutils.h scan.h semantics.h emit.h
  472. genutils.o: trace.h flags.h option.h
  473. inline.o: assert.h error.h ident.h nodes.h builtins.h sequence.h system.h
  474. inline.o: trace.h opNames.h option.h
  475. invocCache.o: assert.h nodes.h symbols.h sequence.h system.h trace.h opNames.h
  476. invocCache.o: option.h ndbm.h
  477. knowCT.o: assert.h nodes.h map.h sequence.h trace.h semantics.h builtins.h
  478. knowCT.o: primitives.h MyParser.h flags.h
  479. knowLocal.o: assert.h nodes.h map.h sequence.h trace.h semantics.h builtins.h
  480. knowLocal.o: primitives.h MyParser.h flags.h
  481. option.o: types.h flags.h assert.h option.h trace.h
  482. primitives.o: datadesc.h builtins.h error.h nodes.h regdefs.h genutils.h emit.h
  483. primitives.o: consts.h evaluate.h primitives.h system.h trace.h
  484. trace.o: types.h flags.h assert.h trace.h
  485. variables.o: assert.h genutils.h nodes.h builtins.h regdefs.h emit.h
  486. variables.o: environment.h MyParser.h flags.h trace.h system.h semantics.h
  487. writeAT.o: assert.h nodes.h sequence.h system.h builtins.h
  488. y.tab.o: y.tab.h error.h tokens.h nodes.h keyword.h sequence.h semantics.h
  489. MyParser.h: UsedParser.h
  490.     mytouch MyParser.h
  491. addresses.h: regdefs.h
  492.     mytouch addresses.h
  493. allocate.h: nodes.h ecTypes.h regdefs.h
  494.     mytouch allocate.h
  495. buildATs.h: nodes.h
  496.     mytouch buildATs.h
  497. datadesc.h: addresses.h types.h ecTypes.h
  498.     mytouch datadesc.h
  499. environment.h: map.h
  500.     mytouch environment.h
  501. error.h: scan.h
  502.     mytouch error.h
  503. evaluate.h: nodes.h
  504.     mytouch evaluate.h
  505. genutils.h: assert.h nodes.h datadesc.h flags.h
  506.     mytouch genutils.h
  507. keyword.h: ident.h MyParser.h
  508.     mytouch keyword.h
  509. nodes.h: ident.h symbols.h tags.h tokens.h types.h set.h
  510.     mytouch nodes.h
  511. emTypes.h: stdTypes.h ecTypes.h
  512.     mytouch emTypes.h
  513. primitives.h: builtins.h assert.h
  514.     mytouch primitives.h
  515. scan.h: tokens.h
  516.     mytouch scan.h
  517. semantics.h: nodes.h
  518.     mytouch semantics.h
  519. sequence.h: nodes.h
  520.     mytouch sequence.h
  521. symbols.h: tags.h ident.h addresses.h
  522.     mytouch symbols.h
  523. typecheck.h: nodes.h
  524.     mytouch typecheck.h
  525.